package com.axiastudio.suite.deliberedetermine; import com.axiastudio.pypapi.Register; import com.axiastudio.pypapi.db.Controller; import com.axiastudio.pypapi.db.Database; import com.axiastudio.pypapi.db.IDatabase; import com.axiastudio.pypapi.db.Validation; import com.axiastudio.suite.deliberedetermine.entities.Determina; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import java.util.Calendar; /** * User: tiziano * Date: 14/03/14 * Time: 11:27 */ public class DeterminaUtil { public static Boolean numeroDiDetermina(Determina determina) { Database db = (Database) Register.queryUtility(IDatabase.class); EntityManager em = db.getEntityManagerFactory().createEntityManager(); int year = Calendar.getInstance().get(Calendar.YEAR); determina.setAnno(year); // cerchiamo il numero di determina CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Determina> cq = cb.createQuery(Determina.class); Root<Determina> root = cq.from(Determina.class); cq.select(root); cq.where(cb.and(cb.equal(root.get("anno"), year), cb.isNotNull(root.get("numero")))); cq.orderBy(cb.desc(root.get("numero"))); TypedQuery<Determina> tq = em.createQuery(cq).setMaxResults(1); Integer numero; try { numero = tq.getSingleResult().getNumero()+1; } catch (NoResultException ex) { numero = 1; } catch (NullPointerException ex) { numero = 1; } catch (Exception ex) { System.out.println("Errore generico"); return Boolean.FALSE; } determina.setNumero(numero); // setto anche la data della determina determina.setData(Calendar.getInstance().getTime()); // commit Controller controller = db.createController(Determina.class); Validation validation = controller.commit(determina); return validation.getResponse(); } }